我们在写博客的时候,尤其用markdown语法是无法直接插入图片的,这时就需要关联图片,而对于Markdown来说,又没有办法直接贴图片,需要将图片上传到一个网站上,之后再取图片的链接,利用[!image]来关联图片,感觉还是挺麻烦的,后面做项目时,同事有用七牛服务器做存储,发现是个好东西,不仅能够方便上传图片,而且容易提供外链,非常方面,体验用户有1G空间,可以上传身份信息验证成为标准用户,这样就有10G的空间了,小猿我已申请,哈哈!!!下面我来说说如何实现自动同步.

简介

qrsync 是一个根据七牛云存储API实现的简易命令行辅助上传同步工具,支持断点续上传,增量同步,它可将用户本地的某目录的文件同步到七牛云存储中,同步或上传几百GB甚至上TB的文件毫无鸭梨。

  • 注意:被同步的文件名和路径必须是utf8编码,非utf8的文件名和路径将会同步失败。

下载

qrsync 命令行辅助同步工具下载地址:

这里我们选择Mac OS下载,解压后会有如下几个文件:
<pre>
-rwxr-xr-x 1 starnet staff 9607820 Jun 30 2014 qboxrsctl
-rwxr-xr-x 1 starnet staff 2543904 Jun 30 2014 qetag
-rwxr-xr-x 1 starnet staff 8394344 Jun 30 2014 qrsboxcli
-rwxr-xr-x 1 starnet staff 12006444 Jun 30 2014 qrsync
</pre>
将这些文件拷贝到/usr/bin中
<pre>
sudo cp qrs* /usr/bin/
</pre>

使用方法

先建立一个配置文件(JSON格式),比如叫conf.json,内容如下:

{
    "src":          "/home/your/sync_dir",
    "dest":         "qiniu:access_key=<AccessKey>&secret_key=<SecretKey>&bucket=<Bucket>&key_prefix=<KeyPrefix>&threshold=<Threshold>",
    "debug_level":  1
}
  • 替换时<>一并替换,后两项可以不设置,直接删除即可.

其中,AccessKeySecretKey 需要在七牛云存储平台上申请。申请步骤步骤如下:

参数名称 必填 说明
src ● 本地源目录路径
是本地需要同步上传目录的完整的绝对路径。这个目录中的所有内容会被同步到指定的 bucket 中。
注意:Windows 平台上路径的表示格式为:盘符:/目录,比如 E 盘下的目录 data 表示为:e:/data
bucket ● 目标空间
是你在七牛云存储上希望保存数据
Bucket名称,选择一个合适的名字即可,要求是只能由字母、数字、下划线等组成。
可以先在七牛管理控制台上创建。
key_prefix ● 文件上传到七牛云存储后的给key添加的前缀。
例如,如果将 key_prefix 设为 abc/,在 src 中存在一个文件 a.txt, 则上传到七牛云存储后,此资源的key为 abc/a.txt
threshold ● 进行分片上传的阈值。
单位为Byte, 默认值为1MB,当文件大小小于1MB时直传整个文件,当文件大于1MB时进行分片上传该文件。
你可以根据你的网络状况来决定该值的大小。
debug_level ● 日志输出等级
通常设置1,只输出必要的日志。
当上传过程发生问题时,设置为0可以得到详细日志。
  • 注意:切勿将配置文件保存在被同步的目录中,否则会带来泄露SecretKey的风险。

可以在 七牛云存储开发者网站后台 进行相应的域名绑定操作,域名绑定成功后,若您将 bucket 设为公用(public)属性,则可以用如下方式对上传的文件进行访问:

<pre>
http://&lt;绑定域名>/<key>
</pre>

key 即是 src 里边文件名或文件的相对路径,key 可以包含斜杠但不能以斜杠开头。比如 src 存在文件 a.txta/b/c.txt,且绑定的域名为 foo.qiniudn.com,那么即可用如下路径访问:

<pre>
http://foo.qiniudn.com/a.txt
http://foo.qiniudn.com/a/b/c.txt
</pre>

在建立完 conf.json 配置文件后,就可以运行 qrsync 程序进行同步。

Unix/Linux/MacOS 系统可以用如下命令行:

<pre>
$ qrsync /path/to/your-conf.json
</pre>

Windows 系统用户在 [开始] 菜单栏选择 [运行] 输入 cmd 回车即可打开 DOS 命令行窗口,然后切换到 qrsync.exe 的所在磁盘路径。假设你的 qrsync.exe 存放在 d:/tools/qrsync.exe,那么如下几行命令可以切换到 qrsync.exe 存放的目录:

<pre>

d:
cd tools

</pre>

进入到 qrsync.exe 所在目录后运行如下命令即可:

<pre>

qrsync.exe /path/to/your-conf.json

</pre>

需要注意的是,qrsync 是增量同步的,如果你上一次同步成功后修改了部分文件,那么再次运行 qrsync 时只同步新增的和被修改的文件。当然,如果上一次同步过程出错了,也可以重新运行 qrsync 程序继续同步。

默认的七牛共享域名是7ximmr.com1.z0.glb.clouddn.com,如下是你同步的文件对应的外链地址
<pre>
http://7ximmr.com1.z0.glb.clouddn.com/文件名
</pre>

常见故障排查

配置文件<src>设置错误:

错误信息

# Windows下
[WARN][qbox.us/shell/qrsync] qrsync.go:70: qrsync.Run failed failed:
 ==> FindNextFile <src>: The system cannot find the file specified. ~ qrsync.Run failed

# Linux或者Mac下
[WARN] qbox.us/shell/qrsync-v2/qrsync.go:70: qrsync.Run failed failed:
 ==> stat <src>: no such file or directory ~ qrsync.Run failed
 ==> qbox.us/qrsync/v2/sync/sync.go:36: stat <src>: no such file or directory ~ sync.Run: src.ListAll failed

解决方案

  • Windows下配置如下:

{
    "src": "C:/Users/Username/Desktop/Test_Directory",
    ...
}

主要需要关注目录分隔符为/,另外文件夹路径如果包含中文需要为UTF-8编码。

  • Linux或者Mac下配置如下:

{
    "src": "/Users/Username/Documents/Test_Directory",
    ...
}

建议路径设置为待同步目录的绝对路径。


更多关于iOS学习开发的文章请登陆我的个人博客www.zhunjiee.com,欢迎前来参观学习


zhunjiee
260 声望5 粉丝

简简单单每一天,做一只快乐的程序猿!


引用和评论

0 条评论